<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>
<body>
    <!-- 

        组件（component）是我们自己扩展的html标签，封装重用的代码

        component是vue.js最强大的功能。

        定义：
        
        全局定义 ：Vue.component(组价名，配置对象)  配置对象里必须要有template,
        
        在任何实例都可以使用

        注：必须放在实例上面
        
        局部定义：compoents:{
            '组件名1':组件对象1，
            '组件名2':组件对象2
        }

        vm是vue的一个实例，也可以理解为组件，是一切组件的根组件

        注：

     -->
    <div id="app">
        <my-header></my-header>
        <main>
            <button-count></button-count>
            <button-count></button-count>
            <button-count></button-count>
        </main>
        <my-footer></my-footer>
    </div>
     <script src="vue.js"></script>
     <script>
         let myHeader = {
            template:'<div>{{msg}}</div>',
            data(){
                return {
                    msg:'这是一个全局组件-data'
                }
            }
         };
         Vue.component('my-header',myHeader);
         let vm = new Vue({
             el:'#app',
             components:{
                'my-footer':{
                     template:'<div>footer组件</div>'
                },
                buttonCount:{
                    template:'<div><button @click="add">add</button>{{count}}<my-span></my-span></div>',
                    data(){
                        return {
                            count:1
                        }
                    },
                    methods:{
                        add(){
                            this.count++;
                        }
                    },
                    components:{
                        'my-span':{
                            template:'<span>span组件</span>'
                        }
                    }
                }
             },
             data:{

             }
         })

     </script>
</body>
</html>